package com.muy.redis.view.window.redis.view.table;

import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;

/**
 * @Author jiyanghuang
 * @Date 2022/8/1 22:30
 */
@Retention(RetentionPolicy.RUNTIME)
@Target({ElementType.METHOD, ElementType.FIELD})
public @interface AColumnDesc {

    /**
     * 列展示的名称
     * @return
     */
    String nameShow() default "";

    /**
     * 展示列的唯一key
     * @return
     */
    String columnUk() default "";

    /**
     * 展示的顺序
     * @return
     */
    int order() default -1;

    ColumnDescEnum type() default ColumnDescEnum.METHOD_ANN;

    ColumnValueEnum valueType() default ColumnValueEnum.PRIMARY;

    /**
     * 当值发生变更时，执行的函数
     * @return
     */
    String vcFun() default "";

    /**
     * 获取值时调用的属性名或方法名
     * 为减少内存属性只存一份
     * @return
     */
    String fetchName() default "";

    /**
     * 更新值时的属性名或方法名
     * @return
     */
    String updateName() default "";

    /**
     * 是否可编辑
     * @return
     */
    boolean cellEditable() default true;

    /**
     * 按字符串显示
     * @return
     */
    ColumnShowAttr columnShowAttr() default ColumnShowAttr.NULL;
}
